package org.papervision3d.cameras
{
    import org.papervision3d.core.Matrix3D;
    import org.papervision3d.core.proto.CameraObject3D;
    
    // The FreeCamera3D class creates a camera that views the area in the direction the camera is aimed.
    // A camera defines the view from which a scene will be rendered. Different camera settings would present a scene from different points of view.
    // 3D cameras simulate still-image, motion picture, or video cameras of the real world. When rendering, the scene is drawn as if you were looking through the camera lens.
    public class FreeCamera3D extends CameraObject3D
    {
        // The FreeCamera3D constructor lets you create a camera that views the area in the direction the camera is aimed.
        // Its initial position can be specified in the initObject.
        // @param    zoom        This value specifies the scale at which the 3D objects are rendered. Higher values magnify the scene, compressing distance. Use it in conjunction with focus.
        // @param    focus       This value is a positive number representing the distance of the observer from the front clipping plane, which is the closest any object can be to the camera. Use it in conjunction with zoom.
        // @param    initObject  An optional object that contains user defined properties with which to populate the newly created DisplayObject3D.
        // It includes x, y, z, rotationX, rotationY, rotationZ, scaleX, scaleY scaleZ and a user defined extra object.
        // If extra is not an object, it is ignored. All properties of the extra field are copied into the new instance. The properties specified with extra are publicly available.
        // The following initObject property is also recognized by the constructor:
        // sort: A Boolean value that determines whether the 3D objects are z-depth sorted between themselves when rendering. The default value is true.
        public function FreeCamera3D(zoom:Number = 2, focus:Number = 100, initObject:Object = null) 
        {
            super(zoom, focus, initObject);
        }
    }
}
